package bitclub;

import java.util.ArrayList;
import java.util.List;
import persistencia.PProveedor;

/**
 * @author I.F.P. BitClub Company TM All rights reserved 
 */
public class Proveedor {

    //Atributos de la clase
    private int id;
    private String nombre;
    private String apellidos;
    private String nombredeEmpresa;
    private String cif;
    private String mail;
    private String tel_movil;
    private String direccion;
    private String localidad;
    private String codigoPostal;

    public Proveedor(int id, String nombre, String apellidos, String nombredeEmpresa, String cif, String mail, String tel_movil, String direccion, String localidad, String codigoPostal) {
        this.id = id;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.nombredeEmpresa = nombredeEmpresa;
        this.cif = cif;
        this.mail = mail;
        this.tel_movil = tel_movil;
        this.direccion = direccion;
        this.localidad = localidad;
        this.codigoPostal = codigoPostal;
    }

    public Proveedor(String nombre, String apellidos, String nombredeEmpresa, String cif, String mail, String tel_movil, String direccion, String localidad, String codigoPostal) {
        this(-1, nombre, apellidos, nombredeEmpresa, cif, mail, tel_movil, direccion, localidad, codigoPostal);
    }

    public Proveedor(){
        //Constructor Vacío
    }
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public String getCif() {
        return cif;
    }

    public void setCif(String cif) {
        this.cif = cif;
    }

    public String getCodigoPostal() {
        return codigoPostal;
    }

    public void setCodigoPostal(String codigoPostal) {
        this.codigoPostal = codigoPostal;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getLocalidad() {
        return this.localidad;
    }

    public void setLocalidad(String localidad) {
        this.localidad = localidad;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String mail) {
        this.mail = mail;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getNombredeEmpresa() {
        return nombredeEmpresa;
    }

    public void setNombredeEmpresa(String nombredeEmpresa) {
        this.nombredeEmpresa = nombredeEmpresa;
    }

    public String getTel_movil() {
        return tel_movil;
    }

    public void setTel_movil(String tel_movil) {
        this.tel_movil = tel_movil;
    }

    @Override
    public String toString() {
        String cadena;
        cadena="DATOS DE PROVEEDOR\n____________________________________________\n";
        cadena+= "Nombre: " + nombre + ", " + apellidos;
        cadena+="Empresa: " + nombredeEmpresa + " (" + cif + ")\n";
        cadena+="Mail: " + mail + ", Tel: " + tel_movil + "\n";
        cadena+="Direccion: " + direccion + ", " + localidad + ", CP:" + codigoPostal + "\n";
        return cadena;
    }

    /**
     * Crea un nuevo Proveedor
     */
    public void nuevo() {
        //Petición a la clase de persistencia de proveedor
        PProveedor.nuevoBD(this);
    }

    /**
     * Actualiza los datos de un Proveedor
     */
    public void actualizar() {
        //Petición a la clase de persistencia de proveedor
        PProveedor.actualizarBD(this);
    }

    /**
     * Devuelve el proveedor cuyo cif corresponde con el parámetro
     * @param cif
     * @return Proveedor
     */
    public static Proveedor seleccionarPorCif(String cif) {
        Proveedor proveedor;
        //Petición a la clase de persistencia de proveedor
        proveedor = PProveedor.seleccionarPorCifBD(cif);
        return proveedor;
    }

    /**
     * Devuelve una lista de proveedores cuyo nombre o apellidos coincida con cierto patrón
     * @param nombre o apellido
     * @return List<Proveedor>
     */
    public static List<Proveedor> seleccionarPorNombre(String nombre) {
        List<Proveedor> listProveedor = new ArrayList();
        //Petición a la clase de persistencia de proveedor        
        listProveedor = PProveedor.seleccionarPorNombreBD(nombre);
        return listProveedor;
    }
}
